package com.gh.thread;

/**
 * ThreadLocal 的用法
 * ThreadLocal是一个关于创建线程局部变量的类。
 *  通常情况下，我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问，
 *  其他线程则无法访问和修改。
 * @author hugx
 * @create 2018-10-24 10:41
 */
public class OrderManager   {

    public static ThreadLocal<Integer> num2= new ThreadLocal<Integer>(){

        @Override
        protected Integer initialValue() {
            return 0;
        }
    };

    public  static ThreadLocal<OrderVo> orderVoThreadLocal=new ThreadLocal<OrderVo>(){

        /**
         * 一定要实现本初始化方法
         * @return
         */
        @Override
        protected OrderVo initialValue() {
            return new OrderVo(0,1.0f);
        }
    };

    public static Integer num=0;

    public static void main(String[] args) {
        System.err.println("==========================================");
        for(int i=0;i<20;i++){
            new Thread(new ProductTask(),"task-"+i).start();
        }

        System.err.println("-----------------------------------------");
    }
}
